package com.share.wechat.core.service;

import com.share.wechat.core.entity.Detail;
import com.share.wechat.core.entity.UserAction;
import org.springframework.data.domain.Page;

import java.util.List;

public interface DetailService {
    /**
     * 存贮一个详细信息
     *
     * @param detail detail
     */
    void save(Detail detail);

    /**
     * detailId 是否在 Detail记录里边
     *
     * @param detailId detailId
     * @return yes->true or no->false
     */
    boolean check(String detailId);

    /**
     * 分页查找
     *
     * @param page 页数
     * @param size 条数
     * @return List
     */
    List<Detail> findByScore(int score, int page, int size);

    /**
     * 查询全部
     *
     * @return List
     */
    List<Detail> findAll();


    /**
     * 根据大类 拿到推荐
     *
     * @param dataSort 大类
     * @param page     页数
     * @param size     条数
     * @return Page
     */
    List<Detail> getDetailLoveBySort(int dataSort, int page, int size);

    /**
     * 没有大类的时候 拿到推荐
     * 默认按照购买数量和推荐数量来取出该物品
     *
     * @param page 页数
     * @param size 条数
     * @return Page
     */
    List<Detail> getDetailLoveBySort(int page, int size);

    /**
     * 根据id显示具体的信息
     *
     * @param id id
     * @return 具体的信息
     */
    Detail showById(String id);


    /**
     * 更具用户的信息直接取出部分感兴趣的东西
     *
     * @param userInfo userInfo
     * @return List
     */
    List<Detail> getDetailByUserInfo(String userInfo, int page, int size);


    /**
     * 该用户没有关注任何信息
     *
     * @return List
     */
    List<Detail> getDetailByNoGroom(int page, int size);

    /**
     * 更具用户的喜好产生数据
     *
     * @param actionList 用户的喜好
     * @return List
     */
    List<Detail> getDetailByUserAction(List<UserAction> actionList);

    /**
     * 产生给用户推荐的数据
     * @param page 页数
     * @param size 条数
     * @return 集合
     */
    List<Detail> getRecommendDetail(int page, int size);

}
